package server;


public abstract class Dinosauro {
	
	//Variabili interne
	private int d=1;
	private float energia=1000;
	private int eta;
	private int vita;
	private int currentpositioni;
	private int currentpositionj;
	private String nomepadrone;
	protected int nutrizione = 0;
	
	//variabili	per leggibilit�
	public static final int AZIONE_RIUSCITA = 0;
	public static final int MORTE_PER_FAME = 1;
	public static final int AZIONE_IMPOSSIBILE = 2;
	public static final int EU = 1500;
	public static final int CARNIVORO = 30;
	public static final int ERBIVORO = 50;
	
	
	//Costruttore
	public Dinosauro(String nomegiocatore, int i, int j){
		nomepadrone=nomegiocatore;
		setCurrentposition(i,j);
		vita=(int) (Math.random()*13) + 24;
	}
	
	//Metodi Principali
	public int cresci(){
		if(d<5)
			if(energia>=1000*d/2){
				d++;
				diminuisciEnergia(1000*d/2);
				invecchia();
				return AZIONE_RIUSCITA;
			}
			else 
				return MORTE_PER_FAME;
		else
			return AZIONE_IMPOSSIBILE;		
	}
	
	
	public int deponiUovo(){
		if(energia>=EU){
			diminuisciEnergia(EU);
			invecchia();
			return AZIONE_RIUSCITA;
		}
		else 
			return MORTE_PER_FAME;
	}
	
	
	public int muovi(int i, int j){
		if(energia>(10*(2^d))){
			diminuisciEnergia(10*(2^d));
			invecchia();
			setCurrentposition(i,j);
			return AZIONE_RIUSCITA;
		}
		else
			return MORTE_PER_FAME;	
	}
	
	public void aumentaEnergia(float plusenergia){
		energia=energia+plusenergia;
	}
	
	
	public void diminuisciEnergia(float variazioneEnergia){
	energia=energia-variazioneEnergia;
	}
	
	public void invecchia(){
		eta++;
	}
	
	
	
	protected void generaVita(){
		vita=(int) (Math.random()*13) + 24;
	}
	
    public int getD() {
    	return d;
	}

	public int getEta() {
		return eta;
	}

	public int getVita() {
		return vita;
	}

	public int getCurrentpositioni() {
		return currentpositioni;
	}
	public int getCurrentpositionj() {
		return currentpositionj;
	}
	
	public void setCurrentposition(int i, int j) {
		currentpositioni = i;
		currentpositionj = j;
	}

	

}
